package com.swak.registry;

import java.util.List;

import org.springframework.beans.factory.DisposableBean;

/**
 * 服务的注册和发现
 * 
 * @author lifeng
 * @date 2021年2月26日 下午1:32:11
 */
public interface RegistryService extends DisposableBean {

	/**
	 * 应用名称
	 * 
	 * @return
	 */
	String applicationName();

	/**
	 * 注册服务
	 * 
	 * @param url
	 */
	void register(URL url);

	/**
	 * 取消注册
	 * 
	 * @param url
	 */
	void unregister(URL url);

	/**
	 * 订阅
	 * 
	 * @param url
	 * @param listener
	 */
	void subscribe(URL url, NotifyListener listener);

	/**
	 * 取消订阅
	 * 
	 * @param url
	 * @param listener
	 */
	void unsubscribe(URL url, NotifyListener listener);

	/**
	 * 主动查找
	 * 
	 * @param url
	 * @return
	 */
	List<URL> lookup(URL url);
}